package com.app.core.config;


import org.afinal.simplecache.ACache;
import org.xutils.x;

import com.app.core.util.Sputil;
import com.baidu.mapapi.SDKInitializer;
import com.specialtreasure.freightdepot.BuildConfig;
import com.tencent.bugly.crashreport.CrashReport;
import com.vondear.rxtools.RxUtils;
import com.yanzhenjie.nohttp.Logger;
import com.yanzhenjie.nohttp.NoHttp;
import com.yanzhenjie.nohttp.OkHttpNetworkExecutor;
import com.yanzhenjie.nohttp.URLConnectionNetworkExecutor;
import com.yanzhenjie.nohttp.cache.DBCacheStore;

import android.app.Application;
import android.content.Context;
import android.support.multidex.MultiDex;

public class MyApp extends Application {

    public static final String TAG = "MyApp";

    //application实例
    private static MyApp myApp;
    //上下文
    private Context context;
    //SharedPreferences工具类
    private Sputil sp;
    //缓存工具类
    private ACache aCache;
    //是否活动
    public static int ISACTIVE = 0;


    @Override
    public void onCreate() {
        super.onCreate();
        init();
        initData();

    }

    /**
     * 初始化一些数据
     */
    private void initData() {
        myApp = this;
        context = getInstance();
        sp = new Sputil(context, TAG);
        aCache = ACache.get(context);
        //xutils
        x.Ext.init(this);
        x.Ext.setDebug(true); // 是否输出debug日志, 开启debug会影响性能.


    }

    /**
     * @description: 初始化一些配置
     * @author: Administrator
     * @date: 2015年7月17日 下午2:19:40
     */
    private void init() {
        //配置nohttp
        Logger.setDebug(true);
        Logger.setTag("HttpModule");
        // 使用默认配置。
        // NoHttp.initialize(this);
        NoHttp.initialize(this, new NoHttp.Config()
                        .setConnectTimeout(1000 * 20)
                        .setReadTimeout(1000 * 30)
                        .setCacheStore(new DBCacheStore(this))
//                 .setNetworkExecutor(new URLConnectionNetworkExecutor())
                        .setNetworkExecutor(new OkHttpNetworkExecutor())
        );


        //bugly
        CrashReport.initCrashReport(getApplicationContext(), "b326109e63", false);
        //百度地图
        SDKInitializer.initialize(getApplicationContext());
        //初始化
        RxUtils.init(this);
    }

    /**
     * @return
     * @description: 返回application实例
     * @author: zhanghao
     * @date: 2015年7月7日 下午4:50:02
     */
    public static synchronized MyApp getInstance() {
        if (null == myApp) {
            myApp = new MyApp();
        }
        return myApp;
    }


    /**
     * @return
     * @description: 获得SharedPreferences实例
     * @author: Administrator
     * @date: 2015年7月16日 下午5:53:59
     */
    public Sputil getSp() {
        return sp;
    }

    /**
     * @return
     * @description: 获得缓存实例
     * @author: Administrator
     * @date: 2015年7月16日 下午5:53:59
     */
    public ACache getaCache() {
        return aCache;
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);

    }


}
